from sqlalchemy.orm import Session
from models import Emp
from schema import EmpSchema

'''
    04 对某个表进行增删改查的操作的封装

'''

'''
    获取所有员工
'''


def get_all_emp(db: Session):
    return db.query(Emp).all()


'''
    根据员工编号查询员工的信息
'''


def get_emp_by_empno(db: Session, empno: int):
    return db.query(Emp).filter(Emp.empno == empno).first()


'''
    新增一个用户

'''


def add_emp(db: Session, emp_schema: EmpSchema):
    # 把来自于前端请求的emp模型转换成跟数据库映射的模型
    # emp:EmpSchema(BaseModel)    ==>     emp:models.Emp(Base)
    db_emp = Emp(**emp_schema.dict())
    # 执行添加的操作
    db.add(db_emp)

    # 刷新操作，并且提交
    db.commit()
    db.refresh(db_emp)
    # 返回增加的员工的对象
    return db_emp


'''
    修改一个员工的信息
'''


def update_emp(db: Session, emp_schema: EmpSchema):
    db_emp = Emp(**emp_schema.dict())
    db.query(Emp).filter(Emp.empno == emp_schema.empno).update(emp_schema.dict())

    db.commit()
    return db_emp


'''
    删除一个员工信息
'''


def del_emp(db: Session, empno: int):
    res = db.query(Emp).filter(Emp.empno == empno).delete()

    db.commit()

    return res
